package top.infopub.mgr.bpa.service;


import com.github.pagehelper.Page;
import top.infopub.generic.GenericService;
import top.infopub.mgr.bpa.domain.SubpackCotDomain;
import top.infopub.mgr.bpa.domain.SubpackLedgerDomain;
import top.infopub.mgr.bpa.vo.ContractManageVo;
import top.infopub.mgr.bpa.vo.SubpackCotVo;
import top.infopub.mgr.common.vo.RspVo;
import top.infopub.model.bpa.BpaCompPlan;
import top.infopub.model.bpa.InnerListing;
import top.infopub.model.bpa.SubpackCot;
import top.infopub.model.bpa.SubpackCotList;
import top.infopub.model.mkt.ProjectAttachment;
import top.infopub.security.vo.AuthorizationVO;

import java.text.ParseException;
import java.util.List;


public interface SubpackCotService extends GenericService<SubpackCot, String> {

//    /**
//     * 根据项目编号查询分包合同记录
//     * @param proCode
//     * @return
//     * @see
//     */
//    List<SubpackCotDomain> selectByProCode(String proCode);

    /**
     * 根据条件查询分包合同记录
     * @param subpackCotVo
     * @return
     * @see
     */
    Page<SubpackCotDomain> selectByDomainWhere(Page<SubpackCotDomain> page,
                                               SubpackCotVo subpackCotVo) throws ParseException;

    /**
     * 分包合同台账
     * @param page
     * @param contractManageVo
     * @return
     * @see
     */
    Page<SubpackLedgerDomain> selectByLedger(Page<SubpackLedgerDomain> page,
                                             ContractManageVo contractManageVo) throws ParseException;

    RspVo queryPackDetail(String id);

    RspVo saveAll(String bodyStr, Integer submitType, AuthorizationVO userDtl, SubpackCot subpackCot, List<InnerListing> innerListings, List<SubpackCotList> cotLists, List<BpaCompPlan> compPlan,List<ProjectAttachment> attachmentList);

    SubpackCot selectBySguid(String id);

//    /**
//     * 根据条件查询分包合同记录--我审批的列表
//     * @param SubpackCotVo
//     * @return
//     * @see
//     */
//    Page<SubpackCotDomain> selectMyCheckByDomainWhere(Page<SubpackCotDomain> page,
//                                                      SubpackCotVo subpackCotVo);
//
//    /**
//     * 判断是否存在相同名称的分包合同名称
//     */
//    List<SubpackCot> isExistSubpackCotName(String subpackCotName,String proCode);
//
//    /**
//     * 判断是否存在相同名称的分包合同补充协议名称
//     */
//    List<SubpackCot> isExistSubpackCotSaName(String subpackCotSaName,String proCode);
//
//    /**
//     * 执行-新增分包合同相关表信息
//     */
//    void saveSubpackCot(SubpackCot subpackCot, List<SubpackCotSub> subpackCotSubs,
//                        List<SubpackCotDetail> subpackCotDetails,
//                        List<SubpackCotList> subpackCotLists,
//                        List<SubpackCotRate> subpackCotRates, List<SubpackCotAtt> subpackCotAtts);
//
//    /**
//     * 返回分包合同中的项目
//     */
//    List<SubpackCot> selectSubpackCot();
//
//    /**
//     * 根据分包合同中的项目编号查询最新版分包合同信息
//     */
//    SubpackCotDomain selectBySubpackCotVersionProCode(String proCode);
//
//    /**
//     * 根据分包合同项目编号查询相关带入信息(原合同id)
//     */
//    SubpackCot selectByProCodes(String proCode);
//
//    /**
//     * 根据分包合同中的项目编号查询最新版本号
//     */
//    SubpackCot selectVersionNoByProCode(String proCode);
//
//    /**
//     * 根据合同名称计算对内结算中的 期数(已审批通过)
//     */
//    int countByName(String names);
//
//    /**
//     * 详情页
//     */
//    SubpackCotVo queryById(String id);
//
//    /**
//     * 根据父关联id查询最新的记录
//     */
//    SubpackCotDomain selectByRefId(String refId);
//
//    /**
//     * 根据id查询数据
//     */
//    SubpackCotDomain selectById(String id);
//
//    /**
//     * 补充签订
//     */
//    void sign(SubpackCotVo subpackCotVo,List<SubpackCotAtt> subpackCotAtts);
//
//    /**
//     * 原总包合同范围内金额(下浮前)(合计)
//     */
//    BigDecimal sumPreScopeFee(String proCode);
//
//    /**
//     * 原总包合同范围内金额(下浮后)(合计)
//     */
//    BigDecimal sumAfterScopeFee(String proCode);

}
